문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 C(프로그래밍 언어) (문단 편집) === The C Programming language === * 원 저자: 데니스 리치 & 브라이언 커니핸 * 번역서: (Kernighan의) C언어 프로그래밍 * 번역자: 김석환(2005년) → 김석환, 박용규, 최홍순(2016년 수정2판) * 출판사: 대영사(2005년) → 휴먼사이언스(2016년 수정2판) 다른 언어들의 경우 여러 교재들이 서로 경쟁하는 추세이지만, 유독 C언어의 경우는 창시자인 데니스 리치와 브라이언 커니핸이 쓴 '''The C Programming language 2nd Edition'''이 독보적인 위치를 점하고 있다. 이 두 사람의 이니셜을 따서 보통 '''K&R''' 이라 칭하거나,[* 주의해야 할 것은, K&R C와 착각하면 안된다. 인터넷에서 검색하면 (주로 C언어 역사) K&R이라는 단어를 K&R C를 지칭하며 사용하는 경우도 가끔 있다. K&R C는 ANIS C 이전 버전의 '언어'이고, 현재 이 페이지에서 칭하는 K&R 은 C언어 교재이며, K&R 1st Edition은 표준화 이전 K&R C의 교재이고, 본문의 K&R 2nd edition은 표준화된 ANSI C(C89) 교재이다.] 제목을 축약해서 '''TCPL'''이라고 부른다. 이 책이 나온 지 매우 오래 되긴 했지만, C언어가 별로 변화가 없는 언어인 데다가 많은 사람들이 C89/90을 표준으로 따르고 있기 때문에 낡은 책이라도 사용에 지장이 없다. 또한, 분량은 전부 다 합쳐도 300쪽도 안 된다. 그것도 Appendix 부분을 빼면 순수 튜토리얼은 200쪽도 안되며, 언어 자체뿐 아니라 프로그래밍에 대한 여러가지 깨알같은 조언까지 다 포함이 되어있다. 보통, 일반적인 프로그래밍 언어 교재가 작아도 500쪽을 가볍게 넘어가고, C++의 창시자인 비아르네 스트로우스트루프(Bjarne Stroustrup)가 K&R과 비슷한 네이밍으로 쓴 The C++ Programming language의 경우 1300쪽에 육박하는 것[* 3차 개정판 1000쪽, C++11로 업데이트 된 4차 개정판에서 1300쪽]에 비하면 엄청나게 짧은 분량이다. K&R이 바이블 취급을 받는 이유는 단순히 역사적이고 C언어 창시자가 쓴 책이기 때문만은 아니다. C언어가 겉으로는 심플해보이지만 워낙 숨은 함정이 많은 언어라 저런 부분들을 제대로 다 짚고 넘어가야 하는데, K&R 이외에 제대로 완전하게 짚어주는 교재가 거의 없다.[* 그나마 K&R만큼 완전히 짚어주는 교재는 후술할 K&K(C Programming: A Modern Approach)라는 교재가 뽑히는데, 이 때문에 K&R과 묶여서 C언어의 바이블로 취급할 정도로 이 두 책은 고평가받는다.] 보통의 고수준 언어들처럼 접근해서 직관적으로 '이렇게 하면 된다.' 식으로 설명을 하는 교재들이 많은데, 사실 온갖 정의되지 않은 행동(Undefined Behaviour)과 구현 특화 상세 내역(Implementation-specific Details), 하드웨어에 의존적인(Hardware Dependent) 함정들이 곳곳에 숨어 있는 C언어는 '이렇게 하면 된다.' 보다 '이렇게 하면 안된다.'를 중점적으로 설명해야 하는 언어이다. 특히 UI나 퍼포먼스 중심으로 돌아가는 어플리케이션 영역이 메인인 언어들과는 달리, OS와 딱 붙어서 보안이나 안정성 및 호환성이 중시되는 시스템 프로그래밍 영역이 메인인 언어라 어느 정도 깐깐하게 접근하는 게 맞는 언어다.[* 그렇기에 더더욱 초심자에게는 어울리지 않는다.] C언어를 C++를 익히기 전의 워밍업 정도로 취급하는 사람들에게는 저런식으로 설렁설렁 쉽게 써진 C언어 교재들도 좋은 평가를 듣는 경우도 많지만, 본격적으로 C언어 프로그래밍을 하려는 사람들 사이에서는 해외 기준으로 K&R과 C Programming: A Modern Approach(일명 K&K)[* 저자의 이름인 킹(K. N. King)의 앞 글자를 땄다.] 두 가지 정도만이 제대로 된 교재 취급을 받는다. K&R이 나온 지 오래된 책이기는 하지만 중요하고 핵심적인 사항들은 오늘날에도 변함없이 적용되는 내용들이다. K&R을 나온 지 오래 된 책이라고 무시하기엔 좋은 내용들이 굉장히 많다. 그러나, 분량이 많은 교재들은 그만큼 친절하고 자세한 설명을 동반하여 비교적 술술 읽히는 것에 반해, K&R은 짧은 만큼 매 문장 하나 하나[* 실제로 아주 중요한 내용이 구석탱이에 딱 한줄 써있는 경우가 많다.]의 중요도가 높기 때문에 프로그래밍 초심자에게 추천할 만한 책은 아니라는 주장도 있다. 심지어 이 책의 한국어판 번역자는 아예 서문에서 대놓고 초심자에게는 적절한 책이 아니라고 했을 정도이다. 게다가 K&R이 좋은 교재인 건 맞지만 오늘날 K&R을 교재로 추천하기가 마냥 좋지만은 않은 이유 중 하나도 책이 너무 오래돼서 초창기 C언어의 유행이나 트릭 정도만을 담고 있고, 그 이후의 여러가지 패러다임의 변화 등을 반영하지 못하고 있기 때문이다.[* 참고로 후술할 K&K라는 책은 2008년에 최종판이 출판됐는데도 이미 고전 취급받는데, K&R은 최종판이 1988년에 출판됐으므로 거의 40년 전 책이다. 그만큼 K&R이 오래된 책이며, 구닥다리 내용을 담고 있기 때문에 C언어의 최신 트렌드를 익히는데는 도움이 안된다는 소리다.] 어차피 저런 걸 모두 담고 있는 교재가 없긴 하지만, 더하고 덜하고 정도의 차이는 있게 마련이고, 그 차이는 나중의 삽질과 시간 낭비로 반드시 뿌린 대로 거두게 된다. 정 K&R을 첫번째 교재로 삼기가 어렵다면 다른 데서 C언어의 기초를 먼저 배우고 복습 차원으로 K&R을 보는 것도 좋다. 그렇게 하면 K&R의 내용 중 구식인 것과 아닌 것을 스스로 가려낼 수 있게 될 테니까. 결론적으로 2020년대 기준 K&R은 초심자가 입문하기에는 좋은 책이 결코 아니다. 다만 중급자 정도의 실력이 되고 복습이 필요할 때, 구식 스타일의 코딩에 대해 알고 싶거나 근본적인 C언어 기능들에 대해 알고 싶다면 K&R을 보기에 좋다고 할 수 있겠다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기